﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Concert.LastFm;
using Concert.Musique;
using Concert.Tools;

namespace Concert
{
    public partial class FrmRechByArtist : Form
    {
        #region champs

        private bool isConnected  = false;
        Event selectedEvent = new Event();
        private const string MESSAGE_RECHERCHE_EN_COURS = "Recherche en cours, veuillez patienter...";
        private const string MESSAGE_SAISIE_ARTISTE = "Veuillez saisir un artiste à rechercher";
        private const string MESSAGE_ARTISTE_INCONNU = "Désolé, l'artiste '#valeur#' est inconnu ...";
        private const string TITRE_CONNEXION_INTERNET = "La connexion à Internet inactive !";
        private const string MESSAGE_CONNEXION_INTERNET = "La recherche est impossible...";

        private string message;


        #endregion
        
        public FrmRechByArtist()
        {
            InitializeComponent();
        }

        
        
        #region methode
        private void rechercheByArtistes()
            {
                //On instancie une collection vide qui contiendra tous les events
                List<Event> lesEvents = new List<Event>();

                string recherche = txtRecherche.Text;
                lesEvents = LastFmApi.getEventsByArtist(recherche);

                //Si aucun artiste trouvé
                if (lesEvents.Count == 0)
                {
                    message = MESSAGE_ARTISTE_INCONNU.Replace("#valeur#", recherche);
                    lblMessage.Text = message;
                    lblMessage.Refresh();
                    erp.SetError(txtRecherche, message);
                }
                else
                {
                    lstEvents.DataSource = lesEvents;
                    lstEvents.DisplayMember = "title";
                }
            }
        #endregion

        private void lstEvents_SelectedIndexChanged(object sender, EventArgs e)
        {
            selectedEvent = (Event)lstEvents.SelectedItem;

            //Affichage des informations concernant l'event
            lblNom.Text = selectedEvent.titre;
        }

        private void btnRecherche_Click(object sender, EventArgs e)
        {
            //Si l'utilisateur n'a rien saisi
            if (txtRecherche.Text == string.Empty)
            {
                message = MESSAGE_SAISIE_ARTISTE;
                erp.SetError(txtRecherche, message);
            }
            else
            {
                //On re-vérifie la connexion à Internet
                if (isConnected == NetManager.isConnected())
                {
                    message = TITRE_CONNEXION_INTERNET;
                    erp.SetError(txtRecherche, message);
                    lblMessage.Text = MESSAGE_CONNEXION_INTERNET;
                    lblMessage.Refresh();
                }
                else
                {
                    //On efface les messages d'erreurs
                    erp.SetError(txtRecherche, string.Empty);

                    rechercheByArtistes();
                    txtRecherche.Clear();
                    tabEvents.Visible = true;

                }
            }
        }

        private void btnMoreInfo_Click_1(object sender, EventArgs e)
        {
            EventDetails formulaire = new EventDetails(selectedEvent);
            formulaire.Show();
        }



    }
}
